#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//int removeElement(int* nums, int numsSize, int val)
//{
//    int L1 = 0;
//    int L2 = 0;
//    int num = 0;
//    for (L1 = 0; L1 < numsSize; L1++)
//    {
//        while (nums[L1] == val && L1 < numsSize)
//        {
//            L1++;
//        }
//        if (L1 < numsSize)
//        {
//            nums[L2] = nums[L1];
//            L2++;
//            num++;
//        }
//    }
//    return num;
//}
//
//int main()
//{
//    int arr[] = { 3,2,2,3 };
//    int a = removeElement(arr, 4, 3);
//    for (int i = 0; i < a; i++)
//    {
//        printf("%d ", arr[i]);
//    }
//    return 0;
//}

//int removeDuplicates(int* nums, int numsSize)
//{
//    int left = 0;
//    int right = 0;
//    while (right < numsSize)
//    {
//        while (right < numsSize && nums[right] == nums[left])
//        {
//            right++;
//        }
//        if (left + 1 < numsSize && right < numsSize && nums[left + 1] != nums[right])
//        {
//            nums[left + 1] = nums[right];
//        }
//        left++;
//    }
//    return left;
//}
//
//int main()
//{
//    int arr[] = { 1,1,2 };
//    int ret = removeDuplicates(arr, 3);
//    for (int i = 0; i < ret; i++)
//    {
//        printf("%d ", arr[i]);
//    }
//    return 0;
//}

//void merge(int* nums1, int m, int* nums2, int n)
//{
//    int num = m + n - 1;
//    n -= 1;
//    m -= 1;
//    while (m >= 0 && n >= 0)
//    {
//        if (nums1[m] > nums2[n])
//        {
//            nums1[num--] = nums1[m--];
//        }
//        else
//        {
//            nums1[num--] = nums2[n--];
//        }
//    }
//    while (n >= 0)
//    {
//        nums1[num--] = nums2[n--];
//    }
//}
//
//int main()
//{
//    int arr1[6] = { 4,5,6,0,0,0 };
//    int arr2[3] = { 1,2,3 };
//    merge(arr1, 3, arr2, 3);
//    for (int i = 0; i < sizeof(arr1) / sizeof(arr1[0]); i++)
//    {
//        printf("%d ", arr1[i]);
//    }
//    return 0;
//}